﻿<UserControl x:Class="GTServices.WPF.Client.Views.SelectItemsView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro"
             xmlns:controls="clr-namespace:GTServices.WPF.Client.Controls"
             xmlns:ext="clr-namespace:GTServices.WPF.Client.Extensions"
             mc:Ignorable="d" >
    <DockPanel MinHeight="300" Background="Transparent">
        
        <StackPanel DockPanel.Dock="Bottom">
            <Label Content="Filter: " />
            <TextBox Background="Transparent" x:Name="FilterString" cal:Message.Attach="[Event TextChanged] = [Action FilterTextChanged($executionContext)]" />
        </StackPanel>
        <TabControl DockPanel.Dock="Top" 
                    VerticalContentAlignment="Stretch" 
                    HorizontalContentAlignment="Stretch"
                    cal:Message.Attach="[Event SelectionChanged] = [Action ClearSelectables($executionContext)]" 
					Background="Transparent"
                    >
            <TabControl.Resources>
                <!-- Default Control template slightly modified -->
                <Style x:Key="TabItemFocusVisual">
                    <Setter Property="Control.Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <Rectangle Margin="3,3,3,1"
                                           StrokeThickness="1"
                                           Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
                                           StrokeDashArray="1 2"
                                           SnapsToDevicePixels="true"/>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>




                <LinearGradientBrush x:Key="TabItemHotBackground"
                         StartPoint="0,0"
                         EndPoint="0,1">
                    <LinearGradientBrush.GradientStops>
                        <GradientStop Color="#EAF6FD"
                          Offset="0.15"/>
                        <GradientStop Color="#D9F0FC"
                          Offset=".5"/>
                        <GradientStop Color="#BEE6FD"
                          Offset=".5"/>
                        <GradientStop Color="#A7D9F5"
                          Offset="1"/>
                    </LinearGradientBrush.GradientStops>
                </LinearGradientBrush>
                <SolidColorBrush x:Key="TabItemSelectedBackground"
                     Color="#F9F9F9"/>
                <SolidColorBrush x:Key="TabItemDisabledBackground"
                     Color="#F4F4F4"/>
                <SolidColorBrush x:Key="TabItemHotBorderBrush"
                     Color="#3C7FB1"/>
                <SolidColorBrush x:Key="TabItemDisabledBorderBrush"
                     Color="#FFC9C7BA"/>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="Padding" Value="4" />
                   
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type TabItem}">
                                <Grid SnapsToDevicePixels="true">
                                    <Border Name="Bd"
                                            Padding="{TemplateBinding Padding}"
                                            BorderBrush="{TemplateBinding BorderBrush}"
                                            Background="{TemplateBinding Background}"
                                            BorderThickness="1,1,1,0"
                                            CornerRadius="6,6,0,0"
                                            >
                                        <ContentPresenter Name="Content"
                                              ContentSource="Header"
                                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                              HorizontalAlignment="{Binding Path=HorizontalContentAlignment,RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
                                              VerticalAlignment="{Binding Path=VerticalContentAlignment,RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
                                              RecognizesAccessKey="True"/>
                                    </Border>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsMouseOver"
                                 Value="true">
                                        <Setter TargetName="Bd"
                                    Property="Background"
                                    Value="{StaticResource TabItemHotBackground}"/>
                                    </Trigger>
                                    <Trigger Property="IsSelected"
                                 Value="true">
                                        <Setter Property="Panel.ZIndex"
                                    Value="1"/>
                                        <Setter TargetName="Bd"
                                    Property="Background"
                                    Value="{StaticResource TabItemSelectedBackground}"/>
                                    </Trigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsSelected"
                                           Value="false"/>
                                            <Condition Property="IsMouseOver"
                                           Value="true"/>
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="Bd"
                                    Property="BorderBrush"
                                    Value="{StaticResource TabItemHotBorderBrush}"/>
                                    </MultiTrigger>
                                    <Trigger Property="TabStripPlacement"
                                 Value="Bottom">
                                        <Setter TargetName="Bd"
                                    Property="BorderThickness"
                                    Value="1,0,1,1"/>
                                    </Trigger>
                                    <Trigger Property="TabStripPlacement"
                                 Value="Left">
                                        <Setter TargetName="Bd"
                                    Property="BorderThickness"
                                    Value="1,1,0,1"/>
                                    </Trigger>
                                    <Trigger Property="TabStripPlacement"
                                 Value="Right">
                                        <Setter TargetName="Bd"
                                    Property="BorderThickness"
                                    Value="0,1,1,1"/>
                                    </Trigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsSelected"
                                           Value="true"/>
                                            <Condition Property="TabStripPlacement"
                                           Value="Top"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Margin"
                                    Value="-2,-2,-2,-1"/>
                                        <Setter TargetName="Content"
                                    Property="Margin"
                                    Value="0,0,0,1"/>
                                    </MultiTrigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsSelected"
                                           Value="true"/>
                                            <Condition Property="TabStripPlacement"
                                           Value="Bottom"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Margin"
                                    Value="-2,-1,-2,-2"/>
                                        <Setter TargetName="Content"
                                    Property="Margin"
                                    Value="0,1,0,0"/>
                                    </MultiTrigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsSelected"
                                           Value="true"/>
                                            <Condition Property="TabStripPlacement"
                                           Value="Left"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Margin"
                                    Value="-2,-2,-1,-2"/>
                                        <Setter TargetName="Content"
                                    Property="Margin"
                                    Value="0,0,1,0"/>
                                    </MultiTrigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsSelected"
                                           Value="true"/>
                                            <Condition Property="TabStripPlacement"
                                           Value="Right"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Margin"
                                    Value="-1,-2,-2,-2"/>
                                        <Setter TargetName="Content"
                                    Property="Margin"
                                    Value="1,0,0,0"/>
                                    </MultiTrigger>
                                    <Trigger Property="IsEnabled"
                                 Value="false">
                                        <Setter TargetName="Bd"
                                    Property="Background"
                                    Value="{StaticResource TabItemDisabledBackground}"/>
                                        <Setter TargetName="Bd"
                                    Property="BorderBrush"
                                    Value="{StaticResource TabItemDisabledBorderBrush}"/>
                                        <Setter Property="Foreground"
                                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TabControl.Resources>
            <TabItem Header="Languages">
                <DockPanel>
                    <ListView 
                        cal:Message.Attach="[Event SelectionChanged] = [Action SelectedSelectablesChanged($executionContext)]" 
                              ItemsSource="{Binding LanguageCollectionView}" 
                              ext:GridViewSort.AutoSort="True"
                              SelectionMode="Extended">
                        <ListView.ContextMenu>
                            <ContextMenu>
                                <MenuItem Header="Select"  cal:Message.Attach="SelectSelectables($executionContext)" />
                            </ContextMenu>
                        </ListView.ContextMenu>
                        <ListView.View>
                            <GridView>
                                <GridViewColumn>
                                    <GridViewColumnHeader>
                                        <CheckBox cal:Message.Attach="[Event Checked] = [Action Select('Language')]; 
                                                                      [Event Unchecked] = [Action Deselect('Language')]"
                                                  />
                                    </GridViewColumnHeader>
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsChecked="{Binding IsSelected}" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Language" DisplayMemberBinding="{Binding Language.Name}" ext:GridViewSort.PropertyName="Language.Name" />
                            </GridView>
                        </ListView.View>
                    </ListView>
                </DockPanel>
            </TabItem>
            <TabItem Header="Categories">
                <ListView ItemsSource="{Binding CategoryCollectionView}" 
                          cal:Message.Attach="[Event SelectionChanged] = [Action SelectedSelectablesChanged($executionContext)]" 
                          SelectionMode="Extended" 
                          ext:GridViewSort.AutoSort="True"
                          >
                    <ListView.ContextMenu>
                        <ContextMenu>
                            <MenuItem Header="Select"  cal:Message.Attach="SelectSelectables($executionContext)" />
                            <MenuItem Header="Export"  cal:Message.Attach="ExportSelectables($executionContext)" />
                        </ContextMenu>
                    </ListView.ContextMenu>
                    <ListView.View>
                        
                        <GridView>

                            <GridViewColumn>
                                <GridViewColumnHeader>
                                    <CheckBox cal:Message.Attach="[Event Checked] = [Action Select('Category')]; 
                                                                  [Event Unchecked] = [Action Deselect('Category')]" />
                                </GridViewColumnHeader>
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <CheckBox IsChecked="{Binding IsSelected}" />
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>


                            <GridViewColumn Header="Name" Width="Auto" DisplayMemberBinding="{Binding Category.Name}" ext:GridViewSort.PropertyName="Category.Name" />
                            <GridViewColumn Header="Classification" Width="Auto" DisplayMemberBinding="{Binding Classification.Name}" ext:GridViewSort.PropertyName="Classification.Name" />
                            <GridViewColumn Header="#Patterns" Width="Auto" DisplayMemberBinding="{Binding Patterns.Count}" ext:GridViewSort.PropertyName="Patterns.Count"/>
                        </GridView>
                    </ListView.View>
                </ListView>
            </TabItem>
            <TabItem Header="Patterns">
                <DockPanel>
                    <ListView ItemsSource="{Binding PatternCollectionView}" 
                              cal:Message.Attach="[Event SelectionChanged] = [Action SelectedSelectablesChanged($executionContext)]" 
                              ext:GridViewSort.AutoSort="True"
                              SelectionMode="Extended">
                        <ListView.ContextMenu>
                            <ContextMenu>
                                <MenuItem Header="Select"  cal:Message.Attach="SelectSelectables($executionContext)" />
                                <MenuItem Header="Export"  cal:Message.Attach="ExportSelectables($executionContext)" />
                            </ContextMenu>
                        </ListView.ContextMenu>
                        <ListView.View>
                            <GridView>
                                <GridViewColumn>
                                    <GridViewColumnHeader>
                                        <CheckBox cal:Message.Attach="[Event Checked] = [Action Select('Pattern')]; 
                                                                      [Event Unchecked] = [Action Deselect('Pattern')]" 
                                                  />
                                    </GridViewColumnHeader>
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsChecked="{Binding IsSelected}" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Pattern"  Width="Auto" DisplayMemberBinding="{Binding Pattern.PatternStr}" ext:GridViewSort.PropertyName="Pattern.PatternStr" />
                                <GridViewColumn Header="Language" Width="Auto" DisplayMemberBinding="{Binding Language.Name}" ext:GridViewSort.PropertyName="Language.Name" />
                            </GridView>
                        </ListView.View>
                    </ListView>
                </DockPanel>
            </TabItem>
        </TabControl>
    </DockPanel>
</UserControl>
